import axios from 'axios'

// 基于 第四种封装 的拦截器					通常使用这种封装
export default function request(config) {
	// 1.创建axios的实例
	const instance = axios.create({
		baseURL: "https://easydoc.xyz/mock/0zk6DpYu", // 请求根路径
		timeout: 5000 // 响应时间
	})

	// 2.拦截器
	// 2.1 请求拦截器，一个参数是config( 成功的函数 )，一个参数是err( 失败的函数 )，发送成功回调config函数，发送失败回调err函数
	instance.interceptors.request.use(config => {
		// 1. 修改config中的信息
		// 2. 发送请求是显示loading图标， 请求成功后(.then中) 隐藏
		// 3. 某些请求必须携带一些特殊的信息，(如： token)
		config.headers['token'] = 'tokentokentokentokentokentokentokentoken' // 请求头中加上了 token
		return config // 拦截成功后最后一定要返回
	}, err => {

	})

	// 2.2 响应拦截器，一个参数是res( 成功的函数 )，一个参数是err( 失败的函数 )，发送成功回调res函数，发送失败回调err函数
	instance.interceptors.response.use(res => {
		return res.data 				// 拦截成功后最后一定要返回，通常要返回res中的data(res.data)
	}, err => {

	})

	// 3.发送真正的网络请求( instance的返回值就是一个Promise )
	return instance(config)
}